from urllib import response

# Create your views here.
from django.http import HttpResponse, HttpResponseRedirect
from django.db.models import F
from django.template import loader
from django.shortcuts import get_object_or_404, render
from .models import Choise, Question
from django.urls import reverse

def index(request):
    latest_question_list = Question.objects.order_by("-pub_date")[:5]
    # template = loader.get_template("polls/index.html")
    # context = {
    #     "latest_question_list":latest_question_list,
    # }
    # return HttpResponse(template.render(context,request))
    # output = ",".join([q.question_text for q in latest_question_list])
    # return HttpResponse(output)

    context = {"latest_question_list": latest_question_list}
    return render(request,"polls/index.html",context)
    # return HttpResponse("hello,world. You're at the polls index.")

def detail(request,question_id):
    # try:
    #     question = Question.objects.get(pk=question_id)
    # except Question.DoesNotExist:
    #     raise Http404("Question dose not exist")
    # return render(request,"polls/details.html",{"question":question})
    # return HttpResponse("You're looking at question %s." % question_id)
    question = get_object_or_404(Question,pk=question_id)
    return render(request,"polls/detail.html",{"question":question})

def results(request,question_id):
    # response = "You're looking at the results of question %s."
    question = get_object_or_404(Question,pk=question_id)
    # return HttpResponse(response % question_id)
    return render(request,"polls/results.html",{"question":question})

def vote(request,question_id):
    # return HttpResponse("you're vgting on question %s." % question_id)
    question = get_object_or_404(Question, pk=question_id)
    try:
        selected_choice = question.choice_set.get(pk=request.POST["choice"])
    except (KeyError, Choise.DoesNotExist):
        # Redisplay the question voting form.
        return render(
            request,
            "polls/detail.html",
            {
                "question": question,
                "error_message": "You didn't select a choice.",
            },
        )
    else:
        selected_choice.votes = F("votes") + 1
        selected_choice.save()
        # Always return an HttpResponseRedirect after successfully dealing
        # with POST data. This prevents data from being posted twice if a
        # user hits the Back button.
        return HttpResponseRedirect(reverse("polls:results", args=(question.id,)))